package util

import (
	"github.com/sirupsen/logrus"
	"github.com/xuri/excelize/v2"
	"io"
)

//CreateSingleSheetExcel 创建单个sheet的xlsx
//@w 输出
//@sheetName
//@data 数据 格式: {"B1": "语文","C1": "数学"}
func CreateSingleSheetExcel(w io.Writer, sheetName string, data map[string]string) {
	//创建excel文件
	excel := excelize.NewFile()
	//设置单元格样式
	style, err := excel.NewStyle(`{
    "font":
		{
			"bold": true,
			"color": "#FF0000"
		}
	}`)
	if err != nil {
		panic(err)
	}
	//创建新表单
	index := excel.NewSheet(sheetName)
	for k, v := range data {
		//设置样式
		err = excel.SetCellStyle(sheetName, k, k, style)
		if err != nil {
			logrus.Error("CrateSingleSheetXlsx设置单元格样式错误", err)
			panic(err)
		}
		//设置单元格的值
		err = excel.SetCellValue(sheetName, k, v)
		if err != nil {
			logrus.Error("CrateSingleSheetXlsx设置单元格值错误", err)
			panic(err)
		}
	}
	//设置默认打开的表单
	excel.SetActiveSheet(index)
	//保存文件到指定路径
	//err := xlsx.SaveAs(filePath)
	err = excel.Write(w)
	if err != nil {
		logrus.Error("CrateSingleSheetXlsx保存出错", err)
		panic(err)
	}
}

// ReadExcel 读取excel
// @return map sheet名: 二维数组
func ReadExcel(r io.Reader) map[string][][]string {
	f, err := excelize.OpenReader(r)
	if err != nil {
		logrus.Error("ReadExcel出错", err)
		panic(err)
	}
	sheets := f.GetSheetList()
	data := make(map[string][][]string)
	for _, sheet := range sheets {
		rows, err := f.GetRows(sheet)
		if err != nil {
			logrus.Error("ReadExcel GetRows 出错", err)
			panic(err)
		}
		data[sheet] = rows

	}
	return data

}
